home *** CD-ROM | disk | FTP | other *** search
/ FishMarket 1.0 / FishMarket v1.0.iso / fishies / 001-025 / disk_004 / bm / matchfound.c < prev    next >
C/C++ Source or Header  |  1992-05-06  |  1KB  |  33 lines

  1. #include <stdio.h>
  2. #include "bm.h"
  3. #include "Extern.h"
  4. MatchFound(Desc, BuffPos, Buffer, BuffEnd)
  5. struct PattDesc *Desc; /* state info about search for one string */
  6. int BuffPos; /* offset of first char of buffer into the file being searched */
  7. char *Buffer, /* pointer to the first character in the buffer */
  8.     *BuffEnd; /* pointer to the last character in the buffer */
  9. {
  10.     char *MLineBegin, *MLineEnd;
  11.     Desc->Success = 0;
  12.     /* Start points to first character after a successful match */
  13.     MLineBegin = MLineEnd = Desc->Start - 1;
  14.     while(MLineBegin >=Buffer && *MLineBegin != '\n') --MLineBegin;
  15.     ++MLineBegin;
  16.     while( MLineEnd <= BuffEnd && *MLineEnd != '\n') ++MLineEnd;
  17.     if (MLineEnd > BuffEnd) --MLineEnd;
  18.     /* fixed 25jun85 pdbain. suppress multiple matches of the same
  19.     * pattern on one line */
  20.     Desc->Start = MLineEnd + 1;
  21.     /* check if exact match */
  22.     if (xFlag && !( Desc->PatLen == (*MLineEnd != '\n' ? ((MLineEnd -
  23.     MLineBegin) + 1) : (MLineEnd - MLineBegin))))
  24.         return(0); /* failure */
  25.     if (sFlag) return(1);
  26.     if (cFlag) {
  27.         ++MatchCount;
  28.         return(1);
  29.     } /* if */
  30.     PrintLine(BuffPos+(Desc->Start-Buffer),MLineBegin,MLineEnd);
  31.     return(1);
  32. } /* MatchFound */
  33.